The present invention relates to fault-tolerant computer software, and in particular, to self-debugging computer software.
Unless otherwise indicated herein, the approaches described in this section are not prior art to the claims in this application and are not admitted to be prior art by inclusion in this section.
The way current software engineering faces system design is characterized along the traditional tasks of analysis, design and implementation. When a system starts operating, the presence of a security attack, threat, or any vulnerability causes in the majority of cases the whole system rendered to be useless, in other words, the system “dies”. Hand made solutions are nice, but in many cases too late, expensive, and time consuming.
Much work has been done on developing fault-tolerant and self-stabilizing systems to address these problems. However, these systems are difficult to build and often error prone themselves. In fact, many actual system failures have resulted not from external faults, but from bugs in fault-tolerant software that occurred with no external faults.
The research community's response was to do formal verification of fault-tolerant and self stabilization algorithms, and much interesting research has been undertaken in this area. However this research is unlikely to directly result in the ability to effectively produce robust self-debugging systems. This is because the work is focused on analysis of algorithms usually specified in a some formal language. This leaves a large gap between what was analyzed and what is deployed. Additionally this research only addresses fault-tolerance and not self-debugging.
Thus, there is a need for improved reliability in software systems. The present invention solves these and other problems by providing a system and method of generating self-debugging computer software.